﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using equinoxWeb.Models;
using equinoxWeb.GestionConexion;
using System.IO;
namespace equinoxWeb.Controllers
{
    public class ArchivoController : EquinoxController
    {
        //
        // GET: /Archivo/

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult Lista(int idCaso)
        {
            try
            {
                List<Archivo> lista = ArchivoFunction.getListaArchivosXCaso(idCaso);
                ViewBag.listaArchivos = lista;
                return View();
            }
            catch (Exception ex)
            {
                ViewBag.error = mensajeError == null || mensajeError == "" ? ex.Message : mensajeError;
                return View("~/Views/Shared/Error.cshtml");
            }
        }

        [HttpPost]
        public ActionResult Lista(int? idCaso)
        {
            try
            {
                for (int i = 0; i < Request.Files.Count; i++)
                {
                    var archivoSubido = Request.Files[i];
                    if (archivoSubido.FileName != "")
                    {
                        Archivo archivo = new Archivo();
                        archivo.Nombre = archivoSubido.FileName;
                        string ruta = Server.MapPath("../Files/" + idCaso.Value);
                        if (!Directory.Exists(ruta))
                        {
                            Directory.CreateDirectory(ruta);
                        }
                        archivo.Ruta = "../Files/" + idCaso.Value + "/" + archivoSubido.FileName;
                        archivoSubido.SaveAs(Path.Combine(ruta, archivoSubido.FileName));
                        archivo.IdCaso = idCaso.Value;
                        ArchivoFunction.guardarArchivo(archivo, idCaso.Value);
                    }
                }
                List<Archivo> lista = ArchivoFunction.getListaArchivosXCaso(idCaso.Value);
                ViewBag.listaArchivos = lista;
                return View();
            }
            catch (Exception ex)
            {
                ViewBag.error = mensajeError == null || mensajeError == "" ? ex.Message : mensajeError;
                return View("~/Views/Shared/Error.cshtml");
            }
        }

        [HttpPost]
        public ActionResult eliminar(int idarchivo)
        {
            try
            {
                Archivo archivo = ArchivoFunction.getArchivoById(idarchivo);
                System.IO.File.Delete(Path.Combine(Server.MapPath("../Files/"), archivo.Nombre));
                ArchivoFunction.eliminarArchivo(idarchivo);
                return null;
            }
            catch (Exception ex)
            {
                ViewBag.error = mensajeError == null || mensajeError == "" ? ex.Message : mensajeError;
                return View("~/Views/Shared/Error.cshtml");
            }
        }

        public ActionResult ListaEquinoxFiles()
        {
            try
            {
                List<Archivo> lista = ArchivoFunction.getListaArchivosPrivados();
                ViewBag.listaArchivos = lista;
                return View();
            }
            catch (Exception ex)
            {
                ViewBag.error = mensajeError == null || mensajeError == "" ? ex.Message : mensajeError;
                return View("~/Views/Shared/Error.cshtml");
            }
        }

        [HttpPost]
        public ActionResult ListaEquinoxFiles(int? idcaso)
        {
            try
            {
                for (int i = 0; i < Request.Files.Count; i++)
                {
                    var archivoSubido = Request.Files[i];
                    if (archivoSubido.FileName != "")
                    {
                        Archivo archivo = new Archivo();
                        archivo.Nombre = archivoSubido.FileName;
                        string ruta = Server.MapPath("../EquinoxPrivateFiles/" );
                        if (!Directory.Exists(ruta))
                        {
                            Directory.CreateDirectory(ruta);
                        }
                        archivo.Ruta = "../EquinoxPrivateFiles/" + archivoSubido.FileName;
                        archivoSubido.SaveAs(Path.Combine(ruta, archivoSubido.FileName));
                        ArchivoFunction.guardarArchivoEquinox(archivo);
                    }
                }
                List<Archivo> lista = ArchivoFunction.getListaArchivosPrivados();
                ViewBag.listaArchivos = lista;
                return View();
            }
            catch (Exception ex)
            {
                ViewBag.error = mensajeError == null || mensajeError == "" ? ex.Message : mensajeError;
                return View("~/Views/Shared/Error.cshtml");
            }
        }


        [HttpPost]
        public ActionResult eliminarEquinoxFiles(int idarchivo)
        {
            try
            {
                Archivo archivo = ArchivoFunction.getArchivoById(idarchivo);
                System.IO.File.Delete(Path.Combine(Server.MapPath("../EquinoxPrivateFiles/"), archivo.Nombre));
                ArchivoFunction.eliminarArchivo(idarchivo);
                return null;
            }
            catch (Exception ex)
            {
                ViewBag.error = mensajeError == null || mensajeError == "" ? ex.Message : mensajeError;
                return View("~/Views/Shared/Error.cshtml");
            }
        }
    }
}
